home *** CD-ROM | disk | FTP | other *** search
- #pragma cplusplus on
- #include <iostream>
- #include <ata.h>
- #include <string.h>
-
- static bool gDoneQ = false;
- static pascal void Complete(ataPB *inPB)
- {
- long saveA5 = SetA5((long)inPB->ataIOParamBlock.ataPBClientPtr1);
-
- gDoneQ = true;
-
- SetA5(saveA5);
- }
-
- void main()
- {
-
- std::cout << "init" << std::endl;
-
-
- ataPB pb;
- ATAPICmdPacket packet;
-
- memset(&pb,0,sizeof(pb));
- memset(&packet,0,sizeof(packet));
-
- pb.ataIOParamBlock.ataPBVers = 3;
- pb.ataIOParamBlock.ataPBFunctionCode = 1;
- pb.ataIOParamBlock.ataPBIOSpeed = 4;
- pb.ataIOParamBlock.ataPBFlags = 0x8021;
- pb.ataIOParamBlock.ataPBDeviceID = 1;
- pb.ataIOParamBlock.ataPBTimeOut = 0x2710;
- pb.ataIOParamBlock.ataPBCallbackPtr = (ProcPtr)Complete;
- pb.ataIOParamBlock.ataPBClientPtr1 = LMGetCurrentA5();
-
- pb.ataIOParamBlock.ataPBStatusRegister = 0x50;
- pb.ataIOParamBlock.ataPBLogicalBlockSize = 0x200;
-
- pb.ataIOParamBlock.ataPBActualTxCount = 0x12;
-
- pb.ataIOParamBlock.ataPBTaskFile.ataTFSDH = 0xA0;
- pb.ataIOParamBlock.ataPBTaskFile.ataTFCommand = 0xA0;
- pb.ataIOParamBlock.ataPBPacketPtr = &packet;
-
- while(!Button()){
- packet.atapiPacketSize = 12;
- packet.atapiCommandByte[0] = 0x1b00;
- packet.atapiCommandByte[2] = 0x0200;
-
-
- OSErr err = noErr;
-
- gDoneQ = false;
- err = ataManager(&pb);
- while(!gDoneQ){
- }
- DebugStr("\pDone");
-
- packet.atapiCommandByte[2] = 0x0300;
-
- gDoneQ = false;
- err = ataManager(&pb);
- while(!gDoneQ){
-
- }
- DebugStr("\pDone2");
-
- }
- /*
- memset(&pb,0,sizeof(pb));
-
-
- memset(&packet,0,sizeof(packet));
- packet.atapiPacketSize = 12;
- UInt8* p = (UInt8*)&packet.atapiCommandByte[0];
- p[0] = 0x1B;
- p[1] = 1;
- p[4] = 3;
-
-
- pb.ataIOParamBlock.ataPBVers = 3;
- pb.ataIOParamBlock.ataPBFunctionCode = 1; // exec
- pb.ataIOParamBlock.ataPBIOSpeed = 4; // ?? ignored for version 3?
- pb.ataIOParamBlock.ataPBFlags = 0x830; // atapi command immediate
-
- pb.ataIOParamBlock.ataPBDeviceID = 1;
- pb.ataIOParamBlock.ataPBTimeOut = 10000;
- pb.ataIOParamBlock.ataPBClientPtr1 = NULL;
- pb.ataIOParamBlock.ataPBClientPtr2 = NULL;
-
- pb.ataIOParamBlock.ataPBPacketPtr = &packet;
-
- OSErr err = ataManager(&pb);
- */
-
-
- }
-
-
-
-